/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.gov.mtc.dgac.licencias.bean;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author elvis
 */
@Entity
@Table(name = "HALLAZGO")
@NamedQueries({@NamedQuery(name = "HallazgoTO.findByCodHallazgo", query = "SELECT h FROM HallazgoTO h WHERE h.codHallazgo = :codHallazgo"), @NamedQuery(name = "HallazgoTO.findByDescHallazgo", query = "SELECT h FROM HallazgoTO h WHERE h.descHallazgo = :descHallazgo"), @NamedQuery(name = "HallazgoTO.findByReqAfectado", query = "SELECT h FROM HallazgoTO h WHERE h.reqAfectado = :reqAfectado"), @NamedQuery(name = "HallazgoTO.findByEvidencia", query = "SELECT h FROM HallazgoTO h WHERE h.evidencia = :evidencia"), @NamedQuery(name = "HallazgoTO.findByAuditado", query = "SELECT h FROM HallazgoTO h WHERE h.auditado = :auditado"), @NamedQuery(name = "HallazgoTO.findByFecha", query = "SELECT h FROM HallazgoTO h WHERE h.fecha = :fecha"), @NamedQuery(name = "HallazgoTO.findByUsuarioCrea", query = "SELECT h FROM HallazgoTO h WHERE h.usuarioCrea = :usuarioCrea"), @NamedQuery(name = "HallazgoTO.findByFecCrea", query = "SELECT h FROM HallazgoTO h WHERE h.fecCrea = :fecCrea"), @NamedQuery(name = "HallazgoTO.findByUsuarioModif", query = "SELECT h FROM HallazgoTO h WHERE h.usuarioModif = :usuarioModif"), @NamedQuery(name = "HallazgoTO.findByFecModif", query = "SELECT h FROM HallazgoTO h WHERE h.fecModif = :fecModif")})
public class HallazgoTO implements Serializable {
    private static final long serialVersionUID = 1L;
    
    @Id
    @GeneratedValue(generator = "SEQHALALZGO")
    @SequenceGenerator(name="SEQHALALZGO", sequenceName="SEQ_HALALZGO",allocationSize=1)
    @Column(name = "COD_HALLAZGO", nullable = false)
    private Integer codHallazgo;
    @Column(name = "DESC_HALLAZGO", nullable = false)
    private String descHallazgo;
    @Column(name = "REQ_AFECTADO")
    private String reqAfectado;
    
    @Column(name = "EVIDENCIA", nullable = false)
    private String evidencia;
    @Column(name = "AUDITADO", nullable = false)
    private String auditado;
    @Column(name = "FECHA", nullable = false)
    @Temporal(TemporalType.DATE)
    private Date fecha;
    @Column(name = "USUARIO_CREA", nullable = false)
    private String usuarioCrea;
    @Column(name = "FEC_CREA", nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    private Date fecCrea;
    @Column(name = "USUARIO_MODIF")
    private String usuarioModif;
    @Column(name = "FEC_MODIF")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fecModif;
    
    @OneToMany(mappedBy = "codHallazgo")
    private Collection<SacpTO> sacpTOCollection;
    
    @JoinColumns({@JoinColumn(name = "COD_PROCEDIMIENTO", referencedColumnName = "COD_PROCEDIMIENTO"), @JoinColumn(name = "COD_AUDITORIA", referencedColumnName = "COD_AUDITORIA")})
    @ManyToOne
    private AuditoriaProcedimientoTO auditoriaProcedimientoTO;
    @JoinColumn(name = "COD_TIPO_HALLAZGO", referencedColumnName = "COD_TIPO_HALLAZGO")
    @ManyToOne
    private TipoHallazgoTO codTipoHallazgo;

    public HallazgoTO() {
        this.codTipoHallazgo = new TipoHallazgoTO();
        this.auditoriaProcedimientoTO=new AuditoriaProcedimientoTO();
    }

    public HallazgoTO(Integer codHallazgo) {
        this.codHallazgo = codHallazgo;
        this.codTipoHallazgo = new TipoHallazgoTO();
        this.auditoriaProcedimientoTO=new AuditoriaProcedimientoTO();
    }

    public HallazgoTO(Integer codHallazgo, String descHallazgo, String evidencia, String auditado, Date fecha, String usuarioCrea, Date fecCrea, String usuarioModif, Date fecModif) {
        this.codHallazgo = codHallazgo;
        this.descHallazgo = descHallazgo;
        this.evidencia = evidencia;
        this.auditado = auditado;
        this.fecha = fecha;
        this.usuarioCrea = usuarioCrea;
        this.fecCrea = fecCrea;
        this.usuarioModif = usuarioModif;
        this.fecModif = fecModif;
        this.codTipoHallazgo = new TipoHallazgoTO();
        this.auditoriaProcedimientoTO=new AuditoriaProcedimientoTO();
    }

    public Integer getCodHallazgo() {
        return codHallazgo;
    }

    public void setCodHallazgo(Integer codHallazgo) {
        this.codHallazgo = codHallazgo;
    }

    public String getDescHallazgo() {
        return descHallazgo;
    }

    public void setDescHallazgo(String descHallazgo) {
        this.descHallazgo = descHallazgo;
    }

    public String getReqAfectado() {
        return reqAfectado;
    }

    public void setReqAfectado(String reqAfectado) {
        this.reqAfectado = reqAfectado;
    }

    public String getEvidencia() {
        return evidencia;
    }

    public void setEvidencia(String evidencia) {
        this.evidencia = evidencia;
    }

    public String getAuditado() {
        return auditado;
    }

    public void setAuditado(String auditado) {
        this.auditado = auditado;
    }

    public Date getFecha() {
        return fecha;
    }

    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }

    public String getUsuarioCrea() {
        return usuarioCrea;
    }

    public void setUsuarioCrea(String usuarioCrea) {
        this.usuarioCrea = usuarioCrea;
    }

    public Date getFecCrea() {
        return fecCrea;
    }

    public void setFecCrea(Date fecCrea) {
        this.fecCrea = fecCrea;
    }

    public String getUsuarioModif() {
        return usuarioModif;
    }

    public void setUsuarioModif(String usuarioModif) {
        this.usuarioModif = usuarioModif;
    }

    public Date getFecModif() {
        return fecModif;
    }

    public void setFecModif(Date fecModif) {
        this.fecModif = fecModif;
    }

    public Collection<SacpTO> getSacpTOCollection() {
        return sacpTOCollection;
    }

    public void setSacpTOCollection(Collection<SacpTO> sacpTOCollection) {
        this.sacpTOCollection = sacpTOCollection;
    }

    public AuditoriaProcedimientoTO getAuditoriaProcedimientoTO() {
        return auditoriaProcedimientoTO;
    }

    public void setAuditoriaProcedimientoTO(AuditoriaProcedimientoTO auditoriaProcedimientoTO) {
        this.auditoriaProcedimientoTO = auditoriaProcedimientoTO;
    }

    public TipoHallazgoTO getCodTipoHallazgo() {
        return codTipoHallazgo;
    }

    public void setCodTipoHallazgo(TipoHallazgoTO codTipoHallazgo) {
        this.codTipoHallazgo = codTipoHallazgo;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (codHallazgo != null ? codHallazgo.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof HallazgoTO)) {
            return false;
        }
        HallazgoTO other = (HallazgoTO) object;
        if ((this.codHallazgo == null && other.codHallazgo != null) || (this.codHallazgo != null && !this.codHallazgo.equals(other.codHallazgo))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "licencias_dto.HallazgoTO[codHallazgo=" + codHallazgo + "]";
    }

}
